const { body, oneOf, param } = require("express-validator");
const { validate } = require("./errorBack");

module.exports = {
  register: validate([
    body("username", "无效的用户名") // body 第二个参数为默认的errmsg
      .notEmpty()
      .withMessage("用户名不能为空")
      .bail()
      .isLength({ min: 3, max: 10 })
      .withMessage("用户名包含3~10个字符")
      .bail(),
    //   body("email", "无效的邮箱")
    //     .optional()
    //     .isEmail()
    //     .withMessage("邮箱格式不正确")
    //     .bail(),
    //   body("phone")
    //     .optional()
    //     .isMobilePhone("zh-CN")
    //     .withMessage("手机号格式不正确")
    //     .bail(),
    //   body().custom(value, (req) => {
    //     if (!req.email && !req.phone) {
    //       throw new Error("手机号和邮箱至少有一个");
    //     }
    //     return true;
    //   }),
    oneOf(
      [
        body("email", "邮箱格式不正确").isEmail().bail(),
        body("phone", "手机号格式不正确").isMobilePhone("zh-CN").bail(),
      ],
      {
        errorType: "flat",
        message: "手机号和邮箱至少有一个",
      }
    ),
    body("password", "密码不能为空").notEmpty(),
  ]),
  login: validate([
    body("username", "用户名不能为空").notEmpty().bail(),
    body("password", "密码不能为空").notEmpty().bail(),
  ]),
  update: validate([
    body("username")
      .isLength({ min: 3, max: 10 })
      .withMessage("用户名包含3~10个字符")
      .bail(),
    body("email", "邮箱格式不正确").optional().isEmail().bail(),
    body("phone", "手机号格式不正确").optional().isMobilePhone("zh-CN").bail(),
  ]),
};
